Mapa y Tabla

Column

Mapa

Tabla

Gráficos

Row

Cantidad de Delitos por Tipo de Delito

Cantidad de Delitos por Tipo de Víctima

Row

Cantidad de Delitos por mes

Proporción de Género por Tipo de Delito

---
title: "Tablero Estadisticas Policiales"
author: "Andy Johel Valverde Ledezma"
date: "10/07/2022"
output:
  flexdashboard::flex_dashboard:
    theme: sandstone
    orientation: rows
    social: menu
    source_code: embed
---

```{r carga de paquetes, message=FALSE, warning=FALSE}
library(flexdashboard)
library(dplyr) 
library(sf) 
library(DT) 
library(plotly) 
library(leaflet) 
library(raster) 
library(ggplot2) 
library(rgdal)
library(tidyverse)
library(stringi)
library(ggthemes)
library(lubridate)
```

```{r carga de datos, message=FALSE, warning=FALSE}
# Carga de datos policiales
delitos <-
  readxl::read_excel(path = "estadisticaspoliciales2021.xls")

# Carga de datos de cantones
cantones <-
  st_read(
    dsn = "cantones_simplificados.geojson",
    quiet = TRUE
  ) %>%
  st_transform(4326)
```

```{r Unión de Datos, message=FALSE, warning=FALSE}
cantones <-
  cantones %>%
  mutate(canton_normalizado = tolower(stri_trans_general(canton, id = "Latin-ASCII")))
delitos <-
  delitos %>%
  mutate(canton_normalizado = tolower(stri_trans_general(Canton, id = "Latin-ASCII")))


delitos <-
  delitos %>%
  mutate(Canton = if_else(Canton == "LEON CORTES", "LEON CORTES CASTRO", Canton)) %>%
  mutate(Canton = if_else(Canton == "VASQUEZ DE CORONADO", "VAZQUEZ DE CORONADO", Canton))
delitos <-
  delitos %>%
  mutate(canton_normalizado = tolower(stri_trans_general(Canton, id = "Latin-ASCII")))

# Unimos los Datos
delitos <-
  delitos %>%
  left_join(
    dplyr::select(
      st_drop_geometry(cantones),
      cod_canton,
      canton_normalizado
    ),
    by = "canton_normalizado",
    copy = FALSE,
    keep = FALSE
  )


# Conteo de registros por código de cantón
delitos_x_canton <-
  delitos %>%
  count(cod_canton, name = "delitos")
# Unión de cantidad de delitos por cantón a cantones
cantones_delitos <-
  cantones %>%
  left_join(
    delitos_x_canton,
    by = "cod_canton",
    copy = FALSE,
    keep = FALSE
  )
```

Mapa y Tabla
=======================================================================

Row {data-height=10}
-----------------------------------------------------------------------

### **Fuente de los datos: [Instituto Geográfico Nacional (IGN)](http://geos.snitcr.go.cr/be/IGN_5/wfs)**
### **Fuente de los datos: [Organismo de Investigación Juficial (OIJ)](https://sitiooij.poder-judicial.go.cr/index.php/ayuda/servicios-policiales/servicios-a-organizaciones/indice-de-transparencia-del-sector-publico-costarricense/datos-abiertos)**

Column {data-width=650}
-----------------------------------------------------------------------

### Mapa

```{r}
# Paleta de colores para los mapas
colores_cantones_delitos <-
  colorNumeric(palette = "Reds",
               domain = cantones_delitos$delitos,
               na.color = "transparent")

# Mapa leaflet de delitos en cantones
leaflet() %>%
  addTiles(group = "OpenStreetMap") %>% 
  addProviderTiles(providers$Esri.WorldImagery, group = "ESRI") %>%
  addPolygons(
    # capa de polígonos
    data = cantones_delitos,
    fillColor = ~ colores_cantones_delitos(cantones_delitos$delitos),
    fillOpacity = 0.8,
    color = "black",
    stroke = TRUE,
    weight = 1.0,
    popup = paste(
      # ventana emergente
      paste(
        "Cantón:",
        cantones_delitos$canton
      ),
      paste(
        "Delitos:",
        cantones_delitos$delitos
      ),
      sep = '
' ), group = "Delitos en cantones" ) %>% addLayersControl( # control de capas baseGroups = c("OpenStreetMap", "ESRI"), overlayGroups = c("Delitos en cantones") ) %>% addLegend( # leyenda position = "bottomleft", pal = colores_cantones_delitos, values = cantones_delitos$delitos, group = "Delitos", title = "Cantidad de delitos" ) ``` ### Tabla ```{r} delitos %>% dplyr::select(Delito, Fecha, Victima, Edad, Genero, Provincia, Canton) %>% mutate(Fecha = as.Date(Fecha, format = "%d/%m/%Y")) %>% datatable( options = list( pageLength = 15, language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json') ), colnames = c( # encabezados de las columnas "Delito", "Fecha", "Víctima", "Edad", "Género", "Provincia", "Cantón" ) ) ``` Gráficos ======================================================================= Row ---------------------------------------------------------------------- ### Cantidad de Delitos por Tipo de Delito ```{r} Cantidad_de_delito_por_tipo <- delitos %>% count(Delito) %>% ggplot(aes(x = reorder(Delito, n), y = n)) + geom_bar(stat = "identity") + ggtitle("Cantidad de Delitos por tipo de Delito") + xlab("Tipo de Delito") + ylab("Cantidad") + coord_flip() + theme_hc() Cantidad_de_delito_por_tipo %>% ggplotly() %>% config(locale = "es") ``` ### Cantidad de Delitos por Tipo de Víctima ```{r} Cantidad_de_delito_por_victima <- delitos %>% count(Victima) %>% ggplot(aes(x = reorder(Victima, -n), y = n)) + geom_bar(stat = "identity") + ggtitle("Cantidad de Delitos por tipo de Víctima") + xlab("Tipo de Víctima") + ylab("Cantidad") + theme_hc() Cantidad_de_delito_por_victima %>% ggplotly() %>% config(locale = "es") ``` Row ----------------------------------------------------------------------- ### Cantidad de Delitos por mes ```{r} delitos$Mes <- month(delitos$Fecha, label = TRUE, abbr = FALSE) Cantidad_Delitos_Mes <- ggplot(data= delitos, aes(x = Mes)) + geom_bar( ) + ggtitle("Cantidad de Delitos en el 2021 (Mesuales)") + xlab("Meses") + ylab("Cantidad de Delitos") + theme_hc() # Gráfico plotly Cantidad_Delitos_Mes %>% ggplotly() %>% config(locale = 'es') ``` ### Proporción de Género por Tipo de Delito ```{r} Proporcion_de_Genero_por_Delito <- delitos %>% ggplot(aes(x = Delito, fill = Genero)) + geom_bar(position = "fill") + ggtitle("Proporciones de Género por tipo de Delito") + xlab("Delito") + ylab("Proporción") + labs(fill = "Género") + coord_flip() + theme_minimal() ggplotly(Proporcion_de_Genero_por_Delito) %>% config(locale = 'es') ```